home *** CD-ROM | disk | FTP | other *** search
/ User's Choice Windows CD / User's Choice Windows CD (CMS Software)(1993).iso / win_q_t / trem.zip / WINDOW.C < prev    next >
Text File  |  1991-05-11  |  5KB  |  183 lines

  1. /************************************************************************
  2.  *
  3.  *    Copyright (c) 1991 Microsoft Corporation.  All Rights Reserved.
  4.  *
  5.  *-----------------------------------------------------------------------
  6.  *
  7.  *     Project:  Windows Terminal Example
  8.  *
  9.  *      Module:  window.c
  10.  *
  11.  *      Author:  Bryan A. Woodruff (baw)
  12.  *
  13.  *
  14.  *     Remarks:  Terminal window procedure
  15.  *
  16.  *   Revisions:  
  17.  *     01.00.000  5/ 9/91 baw   Wrote it.
  18.  *
  19.  ************************************************************************/
  20.  
  21. #include "terminal.h"
  22.  
  23. /************************************************************************
  24.  *  LONG FAR PASCAL TerminalWndProc( HWND hWnd, WORD wMsg,
  25.  *                                   WORD wParam, LONG lParam )
  26.  *
  27.  *  Description:
  28.  *     This is the Terminal Window Proc.  This handles ALL messages
  29.  *     to the terminal window.
  30.  *
  31.  *  Comments:
  32.  *     01.00.000  5/ 9/91 baw   Wrote it.
  33.  *
  34.  ************************************************************************/
  35.  
  36. LONG FAR PASCAL TerminalWndProc( HWND hWnd, WORD wMsg,
  37.                                  WORD wParam, LONG lParam )
  38. {
  39.    switch (wMsg)
  40.    {
  41.       case WM_CREATE:
  42.       {
  43.          HMENU        hMenu ;
  44.          LOCALHANDLE  hTermInfo ;
  45.  
  46.          if (NULL == (hTermInfo = CreateTerminal( hWnd )))
  47.             return ( -1 ) ;
  48.          SetWindowWord( hWnd, GWW_TERMINFO, hTermInfo ) ;
  49.          hMenu = GetMenu( hWnd ) ;
  50.          EnableMenuItem( hMenu, IDM_DISCONNECT,
  51.                          MF_GRAYED | MF_DISABLED | MF_BYCOMMAND ) ;
  52.          EnableMenuItem( hMenu, IDM_CONNECT, MF_ENABLED | MF_BYCOMMAND ) ;
  53.       }
  54.       break ;
  55.  
  56.       case WM_COMMAND:
  57.       {
  58.          switch (wParam)
  59.          {
  60.             case IDM_CONNECT:
  61.             {
  62.                HMENU  hMenu ;
  63.  
  64.                if (OpenConnection( hWnd ))
  65.                {
  66.                   hMenu = GetMenu( hWnd ) ;
  67.                   EnableMenuItem( hMenu, IDM_DISCONNECT,
  68.                                   MF_ENABLED | MF_BYCOMMAND ) ;
  69.                   EnableMenuItem( hMenu, IDM_CONNECT,
  70.                                   MF_GRAYED | MF_DISABLED | MF_BYCOMMAND ) ;
  71.                }
  72.                else
  73.                   MessageBox( hWnd, "Connection failed.", szAppName,
  74.                               MB_ICONEXCLAMATION ) ;
  75.             }
  76.             break ;
  77.  
  78.             case IDM_DISCONNECT:
  79.             {
  80.                HMENU  hMenu ;
  81.  
  82.                CloseConnection( hWnd ) ;
  83.  
  84.                hMenu = GetMenu( hWnd ) ;
  85.                EnableMenuItem( hMenu, IDM_DISCONNECT,
  86.                                MF_GRAYED | MF_DISABLED | MF_BYCOMMAND ) ;
  87.                EnableMenuItem( hMenu, IDM_CONNECT,
  88.                                MF_ENABLED | MF_BYCOMMAND ) ;
  89.             }
  90.             break ;
  91.  
  92.             case IDM_SETTINGS:
  93.             {
  94.                LOCALHANDLE  hTermInfo ;
  95.                NPTERMINFO   npTermInfo ;
  96.  
  97.                hTermInfo = GetWindowWord( hWnd, GWW_TERMINFO ) ;
  98.                GoModalDialogBoxParam( hAppInst, "SettingsDlg", hWnd,
  99.                                       SettingsDlgProc, (DWORD) hTermInfo ) ;
  100.  
  101.                // if fConnected, set new COM parameters
  102.  
  103.                if (NULL != (npTermInfo = (NPTERMINFO) LocalLock( hTermInfo )))
  104.                {
  105.                   if (npTermInfo -> fConnected)
  106.                   {
  107.                      if (!SetupConnection( hWnd ))
  108.                         MessageBox( hWnd, "Settings failed!", szAppName,
  109.                                     MB_ICONEXCLAMATION ) ;
  110.                   }
  111.                   LocalUnlock( hTermInfo ) ;
  112.                }
  113.             }
  114.             break ;
  115.  
  116.             case IDM_ABOUT:
  117.                GoModalDialogBoxParam ( hAppInst, "AboutDlg", hWnd,
  118.                                        AboutDlgProc, NULL ) ;
  119.                break;
  120.  
  121.             case IDM_EXIT:
  122.                PostMessage( hWnd, WM_CLOSE, NULL, 0L ) ;
  123.                break ;
  124.          }
  125.       }
  126.       break ;
  127.  
  128.       case WM_EVENT_RXCHAR:
  129.          ProcessRxEvent( hWnd, wParam, lParam ) ;
  130.          break ;
  131.  
  132.       case WM_PAINT:
  133.          PaintTerminal( hWnd ) ;
  134.          break ;
  135.  
  136.       case WM_SIZE:
  137.          SizeTerminal( hWnd, HIWORD( lParam ), LOWORD( lParam ) ) ;
  138.          break ;
  139.  
  140.       case WM_HSCROLL:
  141.          ScrollTerminalHorz( hWnd, wParam, LOWORD( lParam ) ) ;
  142.          break ;
  143.  
  144.       case WM_VSCROLL:
  145.          ScrollTerminalVert( hWnd, wParam, LOWORD( lParam ) ) ;
  146.          break ;
  147.  
  148.       case WM_CHAR:
  149.          WriteCharacter( hWnd, LOBYTE( wParam ) ) ;
  150.          break ;
  151.  
  152.       case WM_SETFOCUS:
  153.          SetTerminalFocus( hWnd ) ;
  154.          break ;
  155.  
  156.       case WM_KILLFOCUS:
  157.          KillTerminalFocus( hWnd ) ;
  158.          break ;
  159.  
  160.       case WM_DESTROY:
  161.          DestroyTerminal( hWnd ) ;
  162.          PostQuitMessage( 0 ) ;
  163.          break ;
  164.  
  165.       case WM_CLOSE:
  166.          if (IDOK != MessageBox( hWnd, "OK to close window?", "Terminal",
  167.                                  MB_ICONQUESTION | MB_OKCANCEL ))
  168.             break ;
  169.  
  170.          // fall through
  171.  
  172.       default:
  173.          return( DefWindowProc( hWnd, wMsg, wParam, lParam ) ) ;
  174.    }
  175.    return 0L ;
  176.  
  177. } /* end of TerminalWndProc() */
  178.  
  179. /************************************************************************
  180.  * End of File: window.c
  181.  ************************************************************************/
  182.  
  183.